* {
    box-sizing: border-box;
}

body {
    margin: 0;
    min-height: 100vh;

    display: grid;
    place-items: center;

    background: radial-gradient(circle at top, #2a2a2a, #111);

    font-family: "Inter", "Noto Sans JP", sans-serif;
}

.map {
    position: relative;
}

.map img {
    width: 100%;
    display: block;

    border-radius: 24px;

    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
}

.spot {
    position: absolute;

    width: 20px;
    aspect-ratio: 1;

    border: none;
    border-radius: 999px;

    cursor: pointer;

    box-shadow:
        0 0 0 6px rgba(255, 255, 255, 0.15),
        0 10px 30px rgba(0, 0, 0, 0.4);

    transition:
        transform 0.2s,
        background 0.2s;
}

.spot:hover {
    transform: scale(1.2);
}

/* 色 */
.spot.A {
    background: #ff4d6d;
}

.spot.A:hover {
    background: #ff6b86;
}

.spot.B {
    background: #4d9fff;
}

.spot.B:hover {
    background: #72b5ff;
}

.spot.C {
    background: #37c978;
}

.spot.C:hover {
    background: #5cdb96;
}

/* dialog */
dialog {
    padding: 0;
    border: none;
    border-radius: 28px;

    overflow: hidden;

    background: #181818;

    max-width: min(92vw, 1500px);

    box-shadow: 0 30px 80px rgba(0, 0, 0, 0.7);
}

dialog::backdrop {
    background: rgba(0, 0, 0, 0.75);
    backdrop-filter: blur(6px);
}

.popup-image {
    width: 100%;
    display: block;
}

.popup-ui {
    display: flex;
    justify-content: space-between;
    align-items: center;

    padding: 20px 24px;

    color: white;
}

.close {
    border: none;
    border-radius: 14px;

    padding: 12px 18px;

    background: #2d2d2d;
    color: white;

    cursor: pointer;

    font-size: 15px;

    transition: 0.2s;
}

.close:hover {
    background: #444;
}